//		Written by Don Yacktman Copyright (c) 1995 by Don Yacktman.
//				Version 1.0.  All rights reserved.
//
//		This notice may not be removed from this source code.
//
//	This object is included in the MiscKit by permission from the author
//	and its use is governed by the MiscKit license, found in the file
//	"LICENSE.rtf" in the MiscKit distribution.  Please refer to that file
//	for a list of all applicable permissions and restrictions.
//	

#import <misckit/misckit.h>
#import <misckit/miscmerge.h>

void main()
{
	List *output; int i;

	// Set up the file names for the template and data files
	MiscString *templateFile = [MiscString newWithString:"test1.template"];
	MiscString *dataFile = [MiscString newWithString:"test1.data"];

	// A way to read the data file, independent of the merges
	// (But it turns an ascii file into a data structure the
	// merge kit can deal with.)
	MiscRecordParser *recparser = [[MiscRecordParser alloc] init];

	// Basic objects required for a merge:
	MiscMergeTemplate *template = [[MiscMergeTemplate alloc] init];
	MiscMergeDriver *merger = [[MiscMergeDriver alloc] init];

	// Load the files from disk
	[template parseFromFileNamed:templateFile];
	[recparser loadFromFileNamed:dataFile];

	// set up the merge
	[merger setTemplate:template];
	[merger setMergeData:[recparser records]];

	// do the merge
	output = [merger doMerge:nil];
	
	// Print out the results
	for (i=0; i<[output count]; i++) {
		printf("--------------------------------------------------------\n");
		printf("%s\n", [[output objectAt:i] stringValue]);
	}
	printf("--------------------------------------------------------\n");
	// If we weren't exiting, we'd go to the trouble of freeing everything
	// here to avoid memory leaks.
	exit(0);
}